home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Util / Workbench / ToolManager21s.lha / ToolManager / Programmers / oberon / ToolManager.mod
Text File  |  1993-05-16  |  6KB  |  161 lines

  1. (*-------------------------------------------------------------------------*)
  2. (*                                                                         *)
  3. (*  Amiga Oberon Library Module: ToolManager          Date: 16-May-93      *)
  4. (*                                                                         *)
  5. (*   © 1992 by Martin Horneffer                                            *)
  6. (*   © 1993 by Stefan Becker (updated for ToolManager 2.1)                 *)
  7. (*                                                                         *)
  8. (*  This  Module  may  freely  be copied and distributed, as long as it is *)
  9. (*  left unchanged and kept together with "toolmanager.library",           *)
  10. (*  © 1990-1993 Stefan Becker.                                             *)
  11. (*                                                                         *)
  12. (*-------------------------------------------------------------------------*)
  13.  
  14. MODULE ToolManager;
  15.  
  16. IMPORT u:Utility, Intuition, Exec;
  17.  
  18. CONST
  19.   Name          * = "toolmanager.library";
  20.   Version       * = 3;
  21.  
  22. CONST
  23.  
  24.   (* ToolManager Object Types *)
  25.  
  26.   typeExec *    = 0;
  27.   typeImage *   = 1;
  28.   typeSound *   = 2;
  29.   typeMenu *    = 3;
  30.   typeIcon *    = 4;
  31.   typeDock *    = 5;
  32.   typeAccess *  = 6;
  33.   types *       = 7;
  34.  
  35.   (* ToolManager Object Properties (see Object.doc) *)
  36.  
  37.   (* Type: typeExec *)
  38.   arguments *   = u.user +  1;
  39.   command *     = u.user +  2; (* also used for typeSound *)
  40.   currentDir *  = u.user +  3;
  41.   delay *       = u.user +  4;
  42.   execType *    = u.user +  5;
  43.   hotKey *      = u.user +  6; (* also used for typeDock *)
  44.   output *      = u.user +  7;
  45.   path *        = u.user +  8;
  46.   priority *    = u.user +  9;
  47.   pubScreen *   = u.user + 10; (* also used for typeDock *)
  48.   stack *       = u.user + 11;
  49.   toFront *     = u.user + 12;
  50.  
  51.   (* Type: tyepImage *)
  52.   file *        = u.user +  257;
  53.   data *        = u.user +  258;
  54.  
  55.   (* Type: typeSound *)
  56.   port *        = u.user +  513;
  57.  
  58.   (* Type: typeMenu, typeIcon *)
  59.   exec *        = u.user +  769;
  60.   sound *       = u.user +  770;
  61.  
  62.   (* Type: typeIcon *)
  63.   image *       = u.user + 1025;
  64.   showName *    = u.user + 1026;
  65.  
  66.   (* Type: typeIcon, typeDock *)
  67.   leftEdge *    = u.user + 1281;
  68.   topEdge *     = u.user + 1282;
  69.  
  70.   (* Type: typeDock *)
  71.   activated *   = u.user + 1536;
  72.   centered *    = u.user + 1537;
  73.   columns *     = u.user + 1538;
  74.   font *        = u.user + 1539;
  75.   frontMost *   = u.user + 1540;
  76.   menu *        = u.user + 1541;
  77.   pattern *     = u.user + 1542;
  78.   popup *       = u.user + 1543;
  79.   text *        = u.user + 1544;
  80.   title *       = u.user + 1545;
  81.   tool *        = u.user + 1546;
  82.   vertical *    = u.user + 1547;
  83.   backdrop *    = u.user + 1548;
  84.   sticky *      = u.user + 1549;
  85.  
  86.   (* Type: typeAccess *)
  87.   (* None defined yet... *)
  88.  
  89.   (* Types for execType *)
  90.   cli *         = 0;
  91.   wb *          = 1;
  92.   arexx *       = 2;
  93.   dock *        = 3;
  94.   hotkey *      = 4;
  95.   network *     = 5;
  96.   hook *        = 100;
  97.  
  98. TYPE
  99.  
  100. (* Data structures for storing image sequences (TMOBJTYPE_IMAGE/TMOP_Data) *)
  101. (* TMImageNode contains the data for ONE picture. Several nodes are joined *)
  102. (* into a single-linked chain via tmin_Next.                               *)
  103.  
  104.   ImageNodePtr * = UNTRACED POINTER TO ImageNode;
  105.   ImageNode * = STRUCT
  106.                   next * : ImageNodePtr; (* pointer to next node *)
  107.                   data * : Exec.APTR;    (* MEMF_CHIP memory!!   *)
  108.                 END;
  109.  
  110. (* TMImageData contains information about the image data, like sizes etc.   *)
  111. (* You MUST initialize BOTH Image structures and they MUST BE identical     *)
  112. (* except of the ImageData pointer. tmid_Normal.ImageData should point to   *)
  113. (* an image data which shows the inactive state and tmid_Selected.ImageData *)
  114. (* should point to an image which shows the active state.                   *)
  115.  
  116.   ImageDataPtr * = UNTRACED POINTER TO ImageData;
  117.   ImageData * = STRUCT
  118.                   normal *   : Intuition.Image; (* inactive state  *)
  119.                   selected * : Intuition.Image; (* active state    *)
  120.                   data *     : ImageNodePtr;    (* chain of images *)
  121.                 END;
  122.  
  123. VAR
  124.   base          * : Exec.LibraryPtr;
  125.  
  126.  
  127. PROCEDURE QuitToolManager*{base,-36} ();
  128.  
  129. PROCEDURE AllocTMHandle*{base,-42} (): LONGINT;
  130.  
  131. PROCEDURE FreeTMHandle*{base,-48} (             handle{8}: LONGINT);
  132.  
  133. PROCEDURE CreateTMObjectTagList*{base,-54} (    handle{8}: LONGINT;
  134.                                                 name{9}  : ARRAY OF CHAR;
  135.                                                 type{0}  : LONGINT;
  136.                                                 tags{10}  : ARRAY OF u.TagItem): BOOLEAN;
  137. PROCEDURE CreateTMObjectTags*{base,-54} (       handle{8}: LONGINT;
  138.                                                 name{9}  : ARRAY OF CHAR;
  139.                                                 type{0}  : LONGINT;
  140.                                                 tags{10}..: u.Tag): BOOLEAN;
  141.  
  142. PROCEDURE DeleteTMObject*{base,-60} (           handle{8}: LONGINT;
  143.                                                 object{9}: ARRAY OF CHAR): BOOLEAN;
  144.  
  145. PROCEDURE ChangeTMObjectTagList*{base,-66} (    handle{8}: LONGINT;
  146.                                                 object{9}: ARRAY OF CHAR;
  147.                                                 tags{10} : ARRAY OF u.TagItem ): BOOLEAN;
  148. PROCEDURE ChangeTMObjectTags*{base,-66} (       handle{8}: LONGINT;
  149.                                                 object{9}: ARRAY OF CHAR;
  150.                                                 tags{10}..: u.Tag ): BOOLEAN;
  151.  
  152. BEGIN
  153.   base := Exec.OpenLibrary( Name, Version);
  154.   IF base=NIL THEN
  155.     IF Intuition.DisplayAlert(0,"\x00\x64\x14missing toolmanager.library!\o\o",50) THEN END;
  156.     HALT(20)
  157.   END;
  158. CLOSE
  159.   IF base # NIL THEN Exec.CloseLibrary(base) END;
  160. END ToolManager.
  161.